package neuroPoker.PokerLogicKI;

import neuroPoker.poker.SimuTisch;
import neuroPoker.poker.Spieler;
import neuroPoker.poker.Tisch;
import neuroPoker.poker.Enums.Actions;
import pokerLogic2.ActionChecker;
import pokerLogic2.Util;

public class PokerLogicSpieler extends Spieler {
	public static boolean wait = false;

	public ActionChecker actionChecker;

	public Tisch tisch;

	public PokerLogicSpieler(SimuTisch tisch, String name, int sitzPos,
			int stack) {
		super(name, sitzPos, stack, tisch);
		actionChecker = new ActionChecker(new PokerInfoNeuro(tisch, this));
		this.tisch = tisch;
	}

	public PokerLogicSpieler(SimuTisch tisch, String name, int stack) {
		super(name, stack, tisch);
		actionChecker = new ActionChecker(new PokerInfoNeuro(tisch, this));
		this.tisch = tisch;
	}

	@Override
	public Actions getAction(boolean canRaise) {
		Util.println("+++++++++ PokerLogicAction by :" + name + " +++++++++");
		if (wait)
			Util.sleep(Spieler.wait);
		Actions action = actionChecker.getAction(invested).getAction();
		Util.println(action.toString());
		if (action == Actions.raise && !canRaise)
			action = Actions.checkCall;
		return action;
	}

	@Override
	public int getInvested() {
		return invested;
	}

	@SuppressWarnings("unchecked")
	@Override
	public SimuTisch getTisch() {
		return (SimuTisch) tisch;
	}

}
